<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="generator" content="Jekyll v3.6.0">
<title>编译工具 &middot; Bootstrap</title>
<!-- Bootstrap 核心CSS -->
<link href="../dist/css/bootstrap.min.css" rel="stylesheet">
<!-- 本文档额外专用css -->
<link href="../assets/css/docsearch.min.css" rel="stylesheet">
<link href="../assets/css/docs.min.css" rel="stylesheet">

<!-- Favicons图标定义 -->
<link rel="apple-touch-icon" href="../assets/img/favicons/apple-touch-icon.png" sizes="180x180">
<link rel="icon" href="../assets/img/favicons/favicon-32x32.png" sizes="32x32" type="image/png">
<link rel="icon" href="../assets/img/favicons/favicon-16x16.png" sizes="16x16" type="image/png">
  
<link rel="mask-icon" href="../assets/img/favicons/safari-pinned-tab.svg" color="#563d7c">
<link rel="icon" href="../favicon.ico">
<meta name="msapplication-config" content="../assets/img/favicons/browserconfig.xml">
<meta name="theme-color" content="#563d7c">

<!-- Meta关键字定义 -->
<meta name="description" content="The most popular HTML, CSS, and JS library in the world.">
<meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">

<!-- Twitter -->
<meta name="twitter:site" content="@getbootstrap">
<meta name="twitter:creator" content="@getbootstrap">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Introduction">
<meta name="twitter:description" content="编译工具 Bootstrap to get the compiled CSS and JavaScript, source code, or include it with your favorite package managers like npm, RubyGems, and more.">
<meta name="twitter:image" content="../assets/brand/bootstrap-social.png">

<!-- Facebook -->
<meta property="og:url" content="https://getbootstrap.com/docs/4.0/getting-started/introduction/">
<meta property="og:title" content="Introduction">
<meta property="og:description" content="编译工具 Bootstrap to get the compiled CSS and JavaScript, source code, or include it with your favorite package managers like npm, RubyGems, and more.">
<meta property="og:type" content="website">
<meta property="og:image" content="../assets/brand/bootstrap-social.png">
<meta property="og:image:secure_url" content="../assets/brand/bootstrap-social.png">
<meta property="og:image:type" content="image/png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
</head>
<body>
<a id="skippy" class="sr-only sr-only-focusable" href="#content">
<div class="container"> <span class="skiplink-text">跳到主体内容</span> </div>
</a>
<header class="navbar navbar-expand navbar-dark flex-column flex-md-row bd-navbar"> <a class="navbar-brand mr-0 mr-md-2" href="../index.html" aria-label="Bootstrap">
  <svg class="d-block" width="36" height="36" viewbox="0 0 612 612" xmlns="http://www.w3.org/2000/svg" focusable="false">
    <title>Bootstrap</title>
    <path fill="currentColor" d="M510 8a94.3 94.3 0 0 1 94 94v408a94.3 94.3 0 0 1-94 94H102a94.3 94.3 0 0 1-94-94V102a94.3 94.3 0 0 1 94-94h408m0-8H102C45.9 0 0 45.9 0 102v408c0 56.1 45.9 102 102 102h408c56.1 0 102-45.9 102-102V102C612 45.9 566.1 0 510 0z"/>
    <path fill="currentColor" d="M196.77 471.5V154.43h124.15c54.27 0 91 31.64 91 79.1 0 33-24.17 63.72-54.71 69.21v1.76c43.07 5.49 70.75 35.82 70.75 78 0 55.81-40 89-107.45 89zm39.55-180.4h63.28c46.8 0 72.29-18.68 72.29-53 0-31.42-21.53-48.78-60-48.78h-75.57zm78.22 145.46c47.68 0 72.73-19.34 72.73-56s-25.93-55.37-76.46-55.37h-74.49v111.4z"/>
  </svg>
  </a>
  <div class="navbar-nav-scroll">
    <ul class="navbar-nav bd-navbar-nav flex-row">
      <li class="nav-item"><a class="nav-link " href="../index.html">首页</a></li>
      <li class="nav-item"><a class="nav-link active" href="index.html">中文手册</a></li>
      <li class="nav-item"><a class="nav-link " href="../examples/index.html">实例</a></li>
      
      
      
      
    </ul>
  </div>
 
  <a class="btn btn-bd-yellow d-none d-lg-inline-block mb-3 mb-md-0 ml-md-3" href="download.html">下载 Bootstrap</a> </header>

<div class="container-fluid">
  <div class="row flex-xl-nowrap">
    <div class="col-12 col-md-3 col-xl-2 bd-sidebar">
      

      <nav class="collapse bd-links" id="bd-docs-nav">
        <div class="bd-toc-item active"> <a class="bd-toc-link" href="index.html">快速入门</a>
          <ul class="nav bd-sidenav">
            <li><a href="index.html">关于</a></li>
            <li><a href="download.html">下载</a></li>
            <li><a href="contents.html">目录结构</a></li>
            <li><a href="browsers-devices.html">浏览器与设备调优</a></li>
            <li><a href="javascript.html">JavaScript脚本</a></li>
            <li><a href="theming.html">主题化</a></li>
            <li class="active bd-sidenav-active"><a href="build-tools.html">编译工具</a></li>
            <li><a href="webpack.html"> Webpack模块化</a></li>
            <li><a href="accessibility.html">无障碍浏览</a></li>
          </ul>
        </div>
        <div class="bd-toc-item"> <a class="bd-toc-link" href="../layout/overview.html">布局</a>
          <ul class="nav bd-sidenav">
            <li><a href="../layout/overview.html">概览</a></li>
            <li><a href="../layout/grid.html">栅格</a></li>
            <li><a href="../layout/utilities-for-layout.html"> 布局实施建议 </a> </li>
          </ul>
        </div>
        <div class="bd-toc-item"> <a class="bd-toc-link" href="../content/reboot.html">内容 </a>
          <ul class="nav bd-sidenav">
            <li> <a href="../content/reboot.html"> 初始化与CSS重置 </a> </li>
            <li> <a href="../content/typography.html"> 排版 </a> </li>
            <li> <a href="../content/code.html"> 代码 </a> </li>
            <li> <a href="../content/images.html"> 图片 </a> </li>
            <li> <a href="../content/tables.html"> 表格 </a> </li>
            <li> <a href="../content/figures.html"> 图文框 </a> </li>
          </ul>
        </div>
        <div class="bd-toc-item"> <a class="bd-toc-link" href="../components/alerts.html"> 组件 </a>
          <ul class="nav bd-sidenav">
    <li><a href="../components/alerts.html"> 警告提示框(Alerts) </a> </li>
    <li><a href="../components/badge.html"> 徽章(Badge) </a> </li>
    <li><a href="../components/breadcrumb.html"> 面包屑导航(Breadcrumb) </a> </li>
    <li><a href="../components/buttons.html"> 按钮(Button) </a> </li>
    <li><a href="../components/button-group.html"> 按钮组(Button-group) </a> </li>
    <li><a href="../components/card.html"> 卡片(Card) </a> </li>
    <li><a href="../components/carousel.html">  轮播效果(Carousell) </a> </li>
    <li><a href="../components/collapse.html"> 折叠面板(Collapse) </a> </li>
    <li><a href="../components/dropdowns.html"> 下拉菜单(Dropdown) </a> </li>
    <li><a href="../components/forms.html"> 表单(Form) </a> </li>
    <li><a href="../components/input-group.html"> 输入框(Input-group) </a> </li>
    <li><a href="../components/jumbotron.html"> Hero大块屏(Jumbotron) </a> </li>
    <li><a href="../components/list-group.html"> 列表组(List-group) </a> </li>
    <li><a href="../components/media-object.html"> 媒体对象/图文混排(Media-object) </a> </li>
    <li><a href="../components/modal.html"> 弹出模态框(Modal) </a> </li>
    <li><a href="../components/navs.html"> 导航/滑动门(Nav) </a> </li>
    <li><a href="../components/navbar.html"> 导航栏(Navbar) </a> </li>
    <li><a href="../components/pagination.html"> 分页(Pagination) </a> </li>
    <li><a href="../components/popovers.html"> POP提示(Popover) </a> </li>
    <li><a href="../components/progress.html"> 进度条(Progress) </a> </li>
    <li><a href="../components/scrollspy.html"> 滚动监听(Scrollspy) </a> </li>
    <li><a href="../components/spinners.html"> 旋转特效(Spinners) </a> </li>
    <li><a href="../components/toasts.html"> 弹出提示框(Toasts) </a> </li>
    <li><a href="../components/tooltips.html"> 提示冒泡(Tooltip) </a> </li>
          </ul>
        </div>
        <div class="bd-toc-item"> <a class="bd-toc-link" href="../utilities/borders.html"> 公共样式 </a>
          <ul class="nav bd-sidenav">
            <li> <a href="../utilities/borders.html"> 边框(border) </a> </li>
            <li> <a href="../utilities/clearfix.html"> 清动浮动(clearfix) </a> </li>
            <li> <a href="../utilities/close-icon.html"> 关闭图标(close icon) </a> </li>
            <li> <a href="../utilities/colors.html"> 颜色(color) </a> </li>
            <li> <a href="../utilities/display.html"> Display显示属性 </a> </li>
            <li> <a href="../utilities/embed.html"> 嵌入(embed) </a> </li>
            <li> <a href="../utilities/flex.html"> Flex弹性布局 </a> </li>
            <li> <a href="../utilities/float.html"> Float浮动属性 </a> </li>
            <li> <a href="../utilities/image-replacement.html"> 图像替换 </a> </li>
			<li><a href="../utilities/overflow.html"> 溢出 </a> </li>
            <li> <a href="../utilities/position.html"> 固顶(底）及定位 </a> </li>
            <li> <a href="../utilities/screenreaders.html"> 读屏器 (Screenreaders) </a> </li>
			<li><a href="../utilities/shadows.html"> 阴影(shadows) </a> </li>
            <li> <a href="../utilities/sizing.html"> 规格(sizi) </a> </li>
            <li> <a href="../utilities/spacing.html"> 间隔(spacing) </a> </li>
            <li> <a href="../utilities/text.html"> 文本处理 </a> </li>
            <li> <a href="../utilities/vertical-align.html"> 垂直对齐(vertical align) </a> </li>
            <li> <a href="../utilities/visibility.html"> Visibility显示或隐藏(能见度)处理 </a> </li>
          </ul>
        </div>
        <div class="bd-toc-item"> <a class="bd-toc-link" href="../extend/approach.html"> 延伸 </a>
          <ul class="nav bd-sidenav">
           <li><a href="../extend/approach.html"> 方法论 </a> </li>
           <li> <a href="../extend/icons.html"> 图标 </a> </li>
          </ul>
        </div>
        <div class="bd-toc-item"> <a class="bd-toc-link" href="../migration/index.html"> 迁移 </a>
          <ul class="nav bd-sidenav">
          </ul>
        </div>
        <div class="bd-toc-item"> <a class="bd-toc-link" href="../about/history.html"> 关于 </a>
          <ul class="nav bd-sidenav">
            <li> <a href="../about/history.html"> 成长历史 </a> </li>
            <li> <a href="../about/team.html"> 项目团队 </a> </li>
            <li> <a href="../about/brand.html"> 品牌标志 </a> </li>
            <li> <a href="../about/license.html"> 许可授权 </a> </li>
            <li> <a href="../about/translations.html"> 翻译 </a> </li>
          </ul>
        </div>
      </nav>

    </div>

<div class="d-none d-xl-block col-xl-2 bd-toc">
  <ul class="section-nav">
    <li class="toc-entry toc-h2"><a href="#tooling-setup">编译前环境部署</a></li>
    <li class="toc-entry toc-h2"><a href="#using-npm-scripts">使用NPM(nodejs)脚本</a></li>
    <li class="toc-entry toc-h2"><a href="#autoprefixer">Autoprefixer浏览器前缀定义程式</a></li>
    <li class="toc-entry toc-h2"><a href="#local-documentation">本地文档</a></li>
    <li class="toc-entry toc-h2"><a href="#troubleshooting">故障排除</a></li>
  </ul>
</div>
<main class="col-12 col-md-9 col-xl-8 py-md-3 pl-md-5 bd-content" role="main">
  <h1 class="bd-title" id="content">编译工具</h1>
  <p class="bd-lead">了解如何使用Bootstrap包含的npm（nodejs）命令来编译（构建、调试与生成）最终文档、源代码、执行测试等。</p>
   
  <h2 id="tooling-setup">编译前环境部署</h2>
  <p>Bootstrap 使用 <a href="https://docs.npmjs.com/misc/scripts">NPM脚本</a> 来构建整个系统，其中系统的<a href="https://github.com/twbs/bootstrap/blob/v4.0.0-beta.2/package.json">package.json</a> 中明定义了使用框架的方便的方法，包括编译代码，运行测试等.</p>
  <p>要使用我们的构建系统(进行编译）并在本地运行我们的文档，首先需要一个Bootstrap的源文件和Nodejs安装程序副本。如果你应该已经准备好开始动手，让我们一起参照下面的步骤启动来实施：</p>
  <ol>
    <li><a href="https://nodejs.org/download/">下载并安装Node.js</a>, 我们用它来管理我们的依赖关系。</li>
    <li>执行Nodejs命令并导航到 <code class="highlighter-rouge">/bootstrap</code> 的根目录，然后运行 <code class="highlighter-rouge">npm install</code> 命令来安装 <a href="https://github.com/twbs/bootstrap/blob/v4.0.0-beta.2/package.json">package.json</a>中所定义的本地相依赖项目。</li>
    <li><a href="https://www.ruby-lang.org/en/documentation/installation/">安装 Ruby</a>, 通过运行 <code class="highlighter-rouge">gem install bundler</code>命令来安装 <a href="https://bundler.io/">Bundler</a>，完成后运行 <code class="highlighter-rouge">bundle install</code>，这样就安装了所有的 Ruby 依赖关系，比如 Jekyll和其它插件.
      <ul>
        <li><strong>Windows操作系统用户:</strong> 运行Jekyll时可参照<a href="https://jekyllrb.com/docs/windows/">阅读本指南</a> 并进行故障排查。</li>
      </ul>
    </li>
  </ol>
  <p>完成后，你就可以通过命令行来执行丰富的指令了。</p>
  <h2 id="using-npm-scripts">使用NPM(nodejs)脚本</h2>
  <p>我们的 <a href="https://github.com/twbs/bootstrap/blob/v4.0.0-beta.2/package.json">package.json</a> 包括了下面的命令和任务：</p>
  <table>
    <thead>
      <tr>
        <th>事务</th>
        <th>描述</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><code class="highlighter-rouge">npm run dist</code></td>
        <td><code class="highlighter-rouge">npm run dist</code> 创建 <code class="highlighter-rouge">/dist</code> 目录及其下面的文件， <strong>调用<a href="../../Sass/index.html" target="_blank">Sass</a>、<a href="https://github.com/postcss/autoprefixer">Autoprefixer</a>和<a href="https://github.com/mishoo/UglifyJS2">UglifyJS</a>进程。</strong></td>
      </tr>
      <tr>
        <td><code class="highlighter-rouge">npm test</code></td>
        <td>与 <code class="highlighter-rouge">npm run dist</code> 相同，在本地进行测试。</td>
      </tr>
      <tr>
        <td><code class="highlighter-rouge">npm run docs</code></td>
        <td>编译生成本地CSS、JavaScript文档，完成后你可以通过<code class="highlighter-rouge">npm run docs-serve</code>命令在本地运行生成的文档。</td>
      </tr>
    </tbody>
  </table>
  <p>运行 <code class="highlighter-rouge">npm run</code> 可以查看所有 npm脚本命令。</p>
  <h2 id="autoprefixer">Autoprefixer 浏览器前缀定义程式</h2>
  <p>Bootstrap 使用<a href="https://github.com/postcss/autoprefixer">Autoprefixer</a> 在编译时（及编译过程中）自动将浏览器厂商的个性前缀（如ms-、webkit-）添加到某些CSS属性上，这可以节省开发者编写BootStrap的时间和代码，允许我们单独编写CSS的关键部分，同时消除对v3中发现的供应商混合问题带来的隐患。</p>
  <p>我们通过Autoprefixer在我们的GitHub存储库中的单独文件中维护支持的浏览器列表。有关详细信息，请参阅 <a href="https://github.com/twbs/bootstrap/blob/v4.0.0-beta.2/package.json">/package.json</a> 清单。</p>
  <h2 id="local-documentation">本地文档</h2>
  <p>本地文档我们是采用Jekyll工具来编译的（Jekyll是一个将纯文本转化为静态网站和博客的工具，通过Nodejs命令行运行）, 这是一个非常灵活的静态站点生成器，它为我们提供：文件结构、基于Markdown的文件、模板等。以下是如其部署方法：</p>
  <ol>
    <li>运行前一段的 <a href="#tooling-setup">编译前环境部署</a> 安装Jekyll（站点构建器）和其他Ruby依赖项，命令： <code class="highlighter-rouge">bundle install</code>。</li>
    <li>在 <code class="highlighter-rouge">/bootstrap</code> 根目录，运行n <code class="highlighter-rouge">npm run docs-serve</code> 命令行。</li>
    <li>在浏览器打开 <code class="highlighter-rouge">http://localhost:9001</code> 网址，大功造成！</li>
  </ol>
  <p>更多教程请移步<a href="https://jekyllrb.com/docs/home/" target="_blank">Jekyll官网文档中心</a>。</p>
  <h2 id="troubleshooting">故障排除</h2>
  <p>如果你在安装依赖关系或者运行 Grunt 命令时遇到了麻烦，请卸载所有之前的依赖关系版本（服务器中的和本地的），然后运行 <code class="highlighter-rouge">npm install</code>从头再来。</p>
</main>
</div>
</div>

<script src="../js/jquery-3.2.1.slim.min.js"></script> 
<script>window.jQuery || document.write('<script src="../assets/js/vendor/jquery-slim.min.js"><\/script>')</script> 
<script src="../dist/js/popper.min.js"></script> 
<script src="../dist/js/bootstrap.min.js"></script> 
<script src="../assets/js/docs.min.js"></script> 
<script src="../assets/js/ie-emulation-modes-warning.js"></script> 
<script src="../assets/js/docsearch.min.js"></script> 
<script>
  docsearch({
    appId: 'PRR89ISST8',
    apiKey: '95044d57d4d7bb744f322d1f18ed607f',
    indexName: 'z01-bootstrapV4',
	inputSelector: '#search-input',
    handleSelected: function (input, event, suggestion) {
      var url = suggestion.url;
      url = suggestion.isLvl1 ? url.split('#')[0]: url;
      // If it's a title we remove the anchor so it does not jump.
      window.location.href = url;
    },
    transformData: function (hits) {
      return hits.map(function (hit) {
        hit.url = hit.url.replace('https://v4-alpha.getbootstrap.com', '/docs/4.0');
        return hit;
      });
    },
    debug: false // Set debug to true if you want to inspect the dropdown
  });
</script> 

</body>
</html>
